package main

import "fmt"

//java的接口是侵入式接口，即在创建一个类的时候需要声明自己实现了哪些接口
//golang的接口是非侵入式接口，只要一个结构体实现了接口中定义的方法，这个结构体就实现了该接口
//这样的好处是：
//	不用为了实现一个接口导包
//	想要实现一个接口，直接实现方法即可

//接口是可以嵌套的，像组合那样

type Call interface { //定义一个接口，call
	call(str string)
}

type Cat struct { //结构体  Cat

}

func (cat Cat) call(str string) { //cat实现call方法
	fmt.Printf("im is %s", str)
}

func main() {
	var i Call
	cat := Cat{} //cat可以赋值给接口Call
	i = cat

	i.call("cat")
}
